home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / DJGPP / TXI210DC.ZIP / docs / texinfo / texi.6 (.txt) < prev    next >
GNU Info File  |  1993-09-04  |  50KB  |  1,011 lines

  1. This is Info file texi.info, produced by Makeinfo-1.55 from the input
  2. file texi.tex.
  3.    This file documents Texinfo, a documentation system that uses a
  4. single source file to produce both on-line information and a printed
  5. manual.
  6.    Copyright (C) 1988, 1990, 1991, 1992, 1993 Free Software Foundation,
  7.    This is the second edition of the Texinfo documentation,
  8. and is consistent with version 2 of `texinfo.tex'.
  9.    Permission is granted to make and distribute verbatim copies of this
  10. manual provided the copyright notice and this permission notice are
  11. preserved on all copies.
  12.    Permission is granted to copy and distribute modified versions of
  13. this manual under the conditions for verbatim copying, provided that
  14. the entire resulting derived work is distributed under the terms of a
  15. permission notice identical to this one.
  16.    Permission is granted to copy and distribute translations of this
  17. manual into another language, under the above conditions for modified
  18. versions, except that this permission notice may be stated in a
  19. translation approved by the Free Software Foundation.
  20. File: texi,  Node: Inserting Braces,  Next: Controlling Spacing,  Prev: Inserting An Atsign,  Up: Braces Atsigns Periods
  21. Inserting `{' and `}'with @{ and @}
  22. -----------------------------------
  23.    `@{' stands for a single `{' in either printed or Info output.
  24.    `@}' stands for a single `}' in either printed or Info output.
  25.    Do not put braces after either an `@{' or an `@}' command.
  26. File: texi,  Node: Controlling Spacing,  Prev: Inserting Braces,  Up: Braces Atsigns Periods
  27. Spacing After Colons and Periods
  28. --------------------------------
  29.    Use the `@:' command after a period, question mark, exclamation
  30. mark, or colon that should not be followed by extra space.  For
  31. example, use `@:' after periods that end abbreviations which are not at
  32. the ends of sentences.  `@:' has no effect on the Info file output.
  33.    For example,
  34.      The s.o.p.@: has three parts ...
  35.      The s.o.p. has three parts ...
  36. produces
  37.      The s.o.p. has three parts ...
  38.      The s.o.p. has three parts ...
  39. `@:' has no effect on the Info output.  (`s.o.p' is an acronym for
  40. "Standard Operating Procedure".)
  41.    Use `@.' instead of a period at the end of a sentence that ends with
  42. a single capital letter.  Otherwise, TeX will think the letter is an
  43. abbreviation and will not insert the correct end-of-sentence spacing.
  44. Here is an example:
  45.      Give it to M.I.B. and to M.E.W@.  Also, give it to R.J.C@.
  46.      Give it to M.I.B. and to M.E.W.  Also, give it to R.J.C.
  47. produces
  48.      Give it to M.I.B. and to M.E.W.  Also, give it to R.J.C.
  49.      Give it to M.I.B. and to M.E.W.  Also, give it to R.J.C.
  50.    In the Info file output, `@.' is equivalent to a simple `.'.
  51.    The meanings of `@:' and `@.' in Texinfo are designed to work well
  52. with the Emacs sentence motion commands.  This made it necessary for
  53. them to be incompatible with some other formatting systems that use
  54. @-commands.
  55.    Do not put braces after either an `@:' or an `@.' command.
  56. File: texi,  Node: dmn,  Next: Dots Bullets,  Prev: Braces Atsigns Periods,  Up: Insertions
  57. `@dmn'{DIMENSION}: Format a Dimension
  58. =====================================
  59.    At times, you may want to write `12pt' or `8.5in' with little or no
  60. space between the number and the abbreviation for the dimension.  You
  61. can use the `@dmn' command to do this.  On seeing the command, TeX
  62. inserts just enough space for proper typesetting; the Info formatting
  63. commands insert no space at all, since the Info file does not require
  64.    To use the `@dmn' command, write the number and then follow it
  65. immediately, with no intervening space, by `@dmn', and then by the
  66. dimension within braces.
  67. For example,
  68.      A4 paper is 8.27@dmn{in} wide.
  69. produces
  70.      A4 paper is 8.27in wide.
  71.    Not everyone uses this style.  Instead of writing `8.27@dmn{in}' in
  72. the Texinfo file, you may write `8.27 in.' or `8.27 inches'.  (In these
  73. cases, the formatters may insert a line break between the number and the
  74. dimension.  Also, if you write a period after an abbreviation within a
  75. sentence, you should write `@:' after the period to prevent TeX from
  76. inserting extra whitespace.  *Note Spacing After Colons and Periods:
  77. Controlling Spacing.)
  78. File: texi,  Node: Dots Bullets,  Next: TeX and copyright,  Prev: dmn,  Up: Insertions
  79. Inserting Ellipsis, Dots, and Bullets
  80. =====================================
  81.    An "ellipsis" (a line of dots) is not typeset as a string of
  82. periods, so a special command is used for ellipsis in Texinfo.  The
  83. `@bullet' command is special, too.  Each of these commands is followed
  84. by a pair of braces, `{}', without any whitespace between the name of
  85. the command and the braces.  (You need to use braces with these
  86. commands because you can use them next to other text; without the
  87. braces, the formatters would be confused.  *Note @-Command Syntax:
  88. Command Syntax, for further information.)
  89. * Menu:
  90. * dots::                        How to insert dots ...
  91. * bullet::                      How to insert a bullet.
  92. File: texi,  Node: dots,  Next: bullet,  Up: Dots Bullets
  93. `@dots'{}
  94. ---------
  95.    Use the `@dots{}' command to generate an ellipsis, which is three
  96. dots in a row, appropriately spaced, like this: `...'.  Do not simply
  97. write three periods in the input file; that would work for the Info
  98. file output, but would produce the wrong amount of space between the
  99. periods in the printed manual.
  100. File: texi,  Node: bullet,  Prev: dots,  Up: Dots Bullets
  101. `@bullet'{}
  102. -----------
  103.    Use the `@bullet{}' command to generate a large round dot, or the
  104. closest possible thing to one.  In Info, an asterisk is used.
  105.    Here is a bullet: *
  106.    When you use `@bullet' in `@itemize', you do not need to type the
  107. braces, because `@itemize' supplies them.  *Note itemize::.
  108. File: texi,  Node: TeX and copyright,  Next: minus,  Prev: Dots Bullets,  Up: Insertions
  109. Inserting TeX and the Copyright Symbol
  110. ======================================
  111.    The logo `TeX' is typeset in a special fashion and it needs an
  112. @-command.  The copyright symbol, `(C)', is also special.  Each of
  113. these commands is followed by a pair of braces, `{}', without any
  114. whitespace between the name of the command and the braces.
  115. * Menu:
  116. * tex::                         How to insert the TeX logo.
  117. * copyright symbol::            How to use `@copyright'{}.
  118. File: texi,  Node: tex,  Next: copyright symbol,  Up: TeX and copyright
  119. `@TeX'{}
  120. --------
  121.    Use the `@TeX{}' command to generate `TeX'.  In a printed manual,
  122. this is a special logo that is different from three ordinary letters.
  123. In Info, it just looks like `TeX'.  The `@TeX{}' command is unique
  124. among Texinfo commands in that the T and the X are in upper case.
  125. File: texi,  Node: copyright symbol,  Prev: tex,  Up: TeX and copyright
  126. `@copyright'{}
  127. --------------
  128.    Use the `@copyright{}' command to generate `(C)'.  In a printed
  129. manual, this is a `c' inside a circle, and in Info, this is `(C)'.
  130. File: texi,  Node: minus,  Prev: TeX and copyright,  Up: Insertions
  131. `@minus'{}: Inserting a Minus Sign
  132. ==================================
  133.    Use the `@minus{}' command to generate a minus sign.  In a
  134. fixed-width font, this is a single hyphen, but in a proportional font,
  135. the symbol is the customary length for a minus sign--a little longer
  136. than a hyphen.
  137.    You can compare the two forms:
  138.      `-' is a minus sign generated with `@minus{}',
  139.      
  140.      `-' is a hyphen generated with the character `-'.
  141. In the fixed-width font used by Info, `@minus{}' is the same as a
  142. hyphen.
  143.    You should not use `@minus{}' inside `@code' or `@example' because
  144. the width distinction is not made in the fixed-width font they use.
  145.    When you use `@minus' to specify the mark beginning each entry in an
  146. itemized list, you do not need to type the braces (*note itemize::.).
  147. File: texi,  Node: Glyphs,  Next: Breaks,  Prev: Insertions,  Up: Top
  148. Glyphs for Examples
  149. *******************
  150.    In Texinfo, code is often illustrated in examples that are delimited
  151. by `@example' and `@end example', or by `@lisp' and `@end lisp'.  In
  152. such examples, you can indicate the results of evaluation or an
  153. expansion using `=>' or `==>'.  Likewise, there are commands to insert
  154. glyphs to indicate printed output, error messages, equivalence of
  155. expressions, and the location of point.
  156.    The glyph-insertion commands do not need to be used within an
  157. example, but most often they are.  Every  glyph-insertion command is
  158. followed by a pair of left- and right-hand braces.
  159. * Menu:
  160. * Glyphs Summary::
  161. * result::                      How to show the result of expression.
  162. * expansion::                   How to indicate an expansion.
  163. * Print Glyph::                 How to indicate printed output.
  164. * Error Glyph::                 How to indicate an error message.
  165. * Equivalence::                 How to indicate equivalence.
  166. * Point Glyph::                 How to indicate the location of point.
  167. File: texi,  Node: Glyphs Summary,  Next: result,  Up: Glyphs
  168. Glyphs Summary
  169. ==============
  170.    Here are the different glyph commands:
  171.      `@result{}' points to the result of an expression.
  172.      `@expansion{}' shows the results of a macro expansion.
  173.      `@print{}' indicates printed output.
  174. error-->
  175.      `@error{}' indicates that the following text is an error message.
  176.      `@equiv{}' indicates the exact equivalence of two forms.
  177.      `@point{}' shows the location of point.
  178. File: texi,  Node: result,  Next: expansion,  Prev: Glyphs Summary,  Up: Glyphs
  179. =>: Indicating Evaluation
  180. =========================
  181.    Use the `@result{}' command to indicate the result of evaluating an
  182. expression.
  183.    The `@result{}' command is displayed as `=>' in Info and as a double
  184. stemmed arrow in the printed output.
  185.    Thus, the following,
  186.      (cdr '(1 2 3))
  187.           => (2 3)
  188. may be read as "`(cdr '(1 2 3))' evaluates to `(2 3)'".
  189. File: texi,  Node: expansion,  Next: Print Glyph,  Prev: result,  Up: Glyphs
  190. ==>: Indicating an Expansion
  191. ============================
  192.    When an expression is a macro call, it expands into a new expression.
  193. You can indicate the result of the expansion with the `@expansion{}'
  194. command.
  195.    The `@expansion{}' command is displayed as `==>' in Info and as a
  196. long arrow with a flat base in the printed output.
  197.    For example, the following
  198.      @lisp
  199.      (third '(a b c))
  200.           @expansion{} (car (cdr (cdr '(a b c))))
  201.           @result{} c
  202.      @end lisp
  203. produces
  204.      (third '(a b c))
  205.           ==> (car (cdr (cdr '(a b c))))
  206.           => c
  207. which may be read as:
  208.      `(third '(a b c))' expands to `(car (cdr (cdr '(a b c))))'; the
  209.      result of evaluating the expression is `c'.
  210. Often, as in this case, an example looks better if the `@expansion{}'
  211. and `@result{}' commands are indented five spaces.
  212. File: texi,  Node: Print Glyph,  Next: Error Glyph,  Prev: expansion,  Up: Glyphs
  213. -|: Indicating Printed Output
  214. =============================
  215.    Sometimes an expression will print output during its execution.  You
  216. can indicate the printed output with the `@print{}' command.
  217.    The `@print{}' command is displayed as `-|' in Info and similarly,
  218. as a horizontal dash butting against a vertical bar, in the printed
  219. output.
  220.    In the following example, the printed text is indicated with `-|',
  221. and the value of the expression follows on the last line.
  222.      (progn (print 'foo) (print 'bar))
  223.           -| foo
  224.           -| bar
  225.           => bar
  226. In a Texinfo source file, this example is written as follows:
  227.      @lisp
  228.      (progn (print 'foo) (print 'bar))
  229.           @print{} foo
  230.           @print{} bar
  231.           @result{} bar
  232.      @end lisp
  233. File: texi,  Node: Error Glyph,  Next: Equivalence,  Prev: Print Glyph,  Up: Glyphs
  234. error-->: Indicating an Error Message
  235. =====================================
  236.    A piece of code may cause an error when you evaluate it.  You can
  237. designate the error message with the `@error{}' command.
  238.    The `@error{}' command is displayed as `error-->' in Info and as the
  239. word `error' in a box in the printed output.
  240.    Thus,
  241.      @lisp
  242.      (+ 23 'x)
  243.      @error{} Wrong type argument: integer-or-marker-p, x
  244.      @end lisp
  245. produces
  246.      (+ 23 'x)
  247.      error--> Wrong type argument: integer-or-marker-p, x
  248. This indicates that the following error message is printed when you
  249. evaluate the expression:
  250.      Wrong type argument: integer-or-marker-p, x
  251.    Note that `error-->' itself is not part of the error message.
  252. File: texi,  Node: Equivalence,  Next: Point Glyph,  Prev: Error Glyph,  Up: Glyphs
  253. ==: Indicating Equivalence
  254. ==========================
  255.    Sometimes two expressions produce identical results.  You can
  256. indicate the exact equivalence of two forms with the `@equiv{}' command.
  257.    The `@equiv{}' command is displayed as `==' in Info and as a three
  258. parallel horizontal lines in the printed output.
  259.    Thus,
  260.      @lisp
  261.      (make-sparse-keymap) @equiv{} (list 'keymap)
  262.      @end lisp
  263. produces
  264.      (make-sparse-keymap) == (list 'keymap)
  265. This indicates that evaluating `(make-sparse-keymap)' produces
  266. identical results to evaluating `(list 'keymap)'.
  267. File: texi,  Node: Point Glyph,  Prev: Equivalence,  Up: Glyphs
  268. Indicating Point in a Buffer
  269. ============================
  270.    Sometimes you need to show an example of text in an Emacs buffer.  In
  271. such examples, the convention is to include the entire contents of the
  272. buffer in question between two lines of dashes containing the buffer
  273. name.
  274.    You can use the `@point{}' command to show the location of point in
  275. the text in the buffer.  (The symbol for point, of course, is not part
  276. of the text in the buffer; it indicates the place *between* two
  277. characters where point is located.)
  278.    The `@point{}' command is displayed as `-!-' in Info and as a small
  279. five pointed star in the printed output.
  280.    The following example shows the contents of buffer `foo' before and
  281. after evaluating a Lisp command to insert the word `changed'.
  282.      ---------- Buffer: foo ----------
  283.      This is the -!-contents of foo.
  284.      ---------- Buffer: foo ----------
  285.      (insert "changed ")
  286.           => nil
  287.      ---------- Buffer: foo ----------
  288.      This is the changed -!-contents of foo.
  289.      ---------- Buffer: foo ----------
  290.    In a Texinfo source file, the example is written like this:
  291.      @example
  292.      ---------- Buffer: foo ----------
  293.      This is the @point{}contents of foo.
  294.      ---------- Buffer: foo ----------
  295.      
  296.      (insert "changed ")
  297.           @result{} nil
  298.      ---------- Buffer: foo ----------
  299.      This is the changed @point{}contents of foo.
  300.      ---------- Buffer: foo ----------
  301.      @end example
  302. File: texi,  Node: Breaks,  Next: Definition Commands,  Prev: Glyphs,  Up: Top
  303. Making and Preventing Breaks
  304. ****************************
  305.    Usually, a Texinfo file is processed both by TeX and by one of the
  306. Info formatting commands.  Line, paragraph, or page breaks sometimes
  307. occur in the `wrong' place in one or other form of output.  You must
  308. ensure that text looks right both in the printed manual and in the Info
  309. file.
  310.    For example, in a printed manual, page breaks may occur awkwardly in
  311. the middle of an example; to prevent this, you can hold text together
  312. using a grouping command that keeps the text from being split across
  313. two pages.  Conversely, you may want to force a page break where none
  314. would occur normally.  Fortunately, problems like these do not often
  315. arise.  When they do, use the break, break prevention, or pagination
  316. commands.
  317. * Menu:
  318. * Break Commands::              Cause and prevent splits.
  319. * Line Breaks::                 How to force a single line to use two lines.
  320. * w::                           How to prevent unwanted line breaks.
  321. * sp::                          How to insert blank lines.
  322. * page::                        How to force the start of a new page.
  323. * group::                       How to prevent unwanted page breaks.
  324. * need::                        Another way to prevent unwanted page breaks.
  325. File: texi,  Node: Break Commands,  Next: Line Breaks,  Up: Breaks
  326. The Break Commands
  327. ==================
  328.    The break commands create line and paragraph breaks:
  329.      Force a line break.
  330. `@sp N'
  331.      Skip N blank lines.
  332.    The line-break-prevention command holds text together all on one
  333. line:
  334. `@w{TEXT}'
  335.      Prevent TEXT from being split and hyphenated across two lines.
  336.    The pagination commands apply only to printed output, since Info
  337. files do not have pages.
  338. `@page'
  339.      Start a new page in the printed manual.
  340. `@group'
  341.      Hold text together that must appear on one printed page.
  342. `@need MILS'
  343.      Start a new printed page if not enough space on this one.
  344. File: texi,  Node: Line Breaks,  Next: w,  Prev: Break Commands,  Up: Breaks
  345. `@*': Generate Line Breaks
  346. ==========================
  347.    The `@*' command forces a line break in both the printed manual and
  348. in Info.
  349.    For example,
  350.      This line @* is broken @*in two places.
  351. produces
  352.      This line
  353.       is broken
  354.      in two places.
  355. (Note that the space after the first `@*' command is faithfully carried
  356. down to the next line.)
  357.    The `@*' command is often used in a file's copyright page:
  358.      This is edition 2.0 of the Texinfo documentation,@*
  359.      and is for ...
  360. In this case, the `@*' command keeps TeX from stretching the line
  361. across the whole page in an ugly manner.
  362.      *Please note:* Do not write braces after an `@*' command; they are
  363.      not needed.
  364.      Do not write an `@refill' command at the end of a paragraph
  365.      containing an `@*' command; it will cause the paragraph to be
  366.      refilled after the line break occurs, negating the effect of the
  367.      line break.
  368. File: texi,  Node: w,  Next: sp,  Prev: Line Breaks,  Up: Breaks
  369. `@w'{TEXT}: Prevent Line Breaks
  370. ===============================
  371.    `@w{TEXT}' outputs TEXT and prohibits line breaks within TEXT.
  372.    You can use the `@w' command to prevent TeX from automatically
  373. hyphenating a long name or phrase that accidentally falls near the end
  374. of a line.
  375.      You can copy GNU software from @w{@file{prep.ai.mit.edu}}.
  376. produces
  377.      You can copy GNU software from `prep.ai.mit.edu'.
  378.    In the Texinfo file, you must write the `@w' command and its
  379. argument (all the affected text) all on one line.
  380.      *Caution:* Do not write an `@refill' command at the end of a
  381.      paragraph containing an `@w' command; it will cause the paragraph
  382.      to be refilled and may thereby negate the effect of the `@w'
  383.      command.
  384. File: texi,  Node: sp,  Next: page,  Prev: w,  Up: Breaks
  385. `@sp' N: Insert Blank Lines
  386. ===========================
  387.    A line beginning with and containing only `@sp N' generates N blank
  388. lines of space in both the printed manual and the Info file.  `@sp'
  389. also forces a paragraph break.  For example,
  390.      @sp 2
  391. generates two blank lines.
  392.    The `@sp' command is most often used in the title page.
  393. File: texi,  Node: page,  Next: group,  Prev: sp,  Up: Breaks
  394. `@page': Start a New Page
  395. =========================
  396.    A line containing only `@page' starts a new page in a printed
  397. manual.  The command has no effect on Info files since they are not
  398. paginated.  An `@page' command is often used in the `@titlepage'
  399. section of a Texinfo file to start the copyright page.
  400. File: texi,  Node: group,  Next: need,  Prev: page,  Up: Breaks
  401. `@group': Prevent Page Breaks
  402. =============================
  403.    The `@group' command (on a line by itself) is used inside an
  404. `@example' or similar construct to begin an unsplittable vertical
  405. group, which will appear entirely on one page in the printed output.
  406. The group is terminated by a line containing only `@end group'.  These
  407. two lines produce no output of their own, and in the Info file output
  408. they have no effect at all.
  409.    Although `@group' would make sense conceptually in a wide variety of
  410. contexts, its current implementation works reliably only within
  411. `@example' and variants, and within `@display', `@format', `@flushleft'
  412. and `@flushright'.  *Note Quotations and Examples::.  (What all these
  413. commands have in common is that each line of input produces a line of
  414. output.)  In other contexts, `@group' can cause anomalous vertical
  415. spacing.
  416.    This formatting requirement means that you should write:
  417.      @example
  418.      @group
  419.      ...
  420.      @end group
  421.      @end example
  422. with the `@group' and `@end group' commands inside the `@example' and
  423. `@end example' commands.
  424.    The `@group' command is most often used to hold an example together
  425. on one page.  In this Texinfo manual, more than 100 examples contain
  426. text that is enclosed between `@group' and `@end group'.
  427.    If you forget to end a group, you may get strange and unfathomable
  428. error messages when you run TeX.  This is because TeX keeps trying to
  429. put the rest of the Texinfo file onto the one page and does not start
  430. to generate error messages until it has processed considerable text.
  431. It is a good rule of thumb to look for a missing `@end group' if you
  432. get incomprehensible error messages in TeX.
  433. File: texi,  Node: need,  Prev: group,  Up: Breaks
  434. `@need MILS': Prevent Page Breaks
  435. =================================
  436.    A line containing only `@need N' starts a new page in a printed
  437. manual if fewer than N mils (thousandths of an inch) remain on the
  438. current page.  Do not use braces around the argument N.  The `@need'
  439. command has no effect on Info files since they are not paginated.
  440.    This paragraph is preceded by an `@need' command that tells TeX to
  441. start a new page if fewer than 800 mils (eight-tenths inch) remain on
  442. the page.  It looks like this:
  443.      @need 800
  444.      This paragraph is preceded by ...
  445.    The `@need' command is useful for preventing orphans (single lines
  446. at the bottoms of printed pages).
  447. File: texi,  Node: Definition Commands,  Next: Footnotes,  Prev: Breaks,  Up: Top
  448. Definition Commands
  449. *******************
  450.    The `@deffn' command and the other "definition commands" enable you
  451. to describe functions, variables, macros, commands, user options,
  452. special forms and other such artifacts in a uniform format.
  453.    In the Info file, a definition causes the entity
  454. category--`Function', `Variable', or whatever--to appear at the
  455. beginning of the first line of the definition, followed by the entity's
  456. name and arguments.  In the printed manual, the command causes TeX to
  457. print the entity's name and its arguments on the left margin and print
  458. the category next to the right margin.  In both output formats, the
  459. body of the definition is indented.  Also, the name of the entity is
  460. entered into the appropriate index: `@deffn' enters the name into the
  461. index of functions, `@defvr' enters it into the index of variables, and
  462. so on.
  463.    A manual need not and should not contain more than one definition for
  464. a given name.  An appendix containing a summary should use `@table'
  465. rather than the definition commands.
  466. * Menu:
  467. * Def Cmd Template::            How to structure a description using a
  468.                                   definition command.
  469. * Optional Arguments::          How to handle optional and repeated arguments.
  470. * deffnx::                      How to group two or more `first' lines.
  471. * Def Cmds in Detail::          All the definition commands.
  472. * Def Cmd Conventions::         Conventions for writing definitions.
  473. * Sample Function Definition::
  474. File: texi,  Node: Def Cmd Template,  Next: Optional Arguments,  Up: Definition Commands
  475. The Template for a Definition
  476. =============================
  477.    The `@deffn' command is used for definitions of entities that
  478. resemble functions.  To write a definition using the `@deffn' command,
  479. write the `@deffn' command at the beginning of a line and follow it on
  480. the same line by the category of the entity, the name of the entity
  481. itself, and its arguments (if any).  Then write the body of the
  482. definition on succeeding lines.  (You may embed examples in the body.)
  483. Finally, end the definition with an `@end deffn' command written on a
  484. line of its own.  (The other definition commands follow the same
  485. format.)
  486.    The template for a definition looks like this:
  487.      @deffn CATEGORY NAME ARGUMENTS...
  488.      BODY-OF-DEFINITION
  489.      @end deffn
  490. For example,
  491.      @deffn Command forward-word count
  492.      This command moves point forward @var{count} words
  493.      (or backward if @var{count} is negative). ...
  494.      @end deffn
  495. produces
  496.       - Command: forward-word COUNT
  497.           This function moves point forward COUNT words (or backward if
  498.           COUNT is negative). ...
  499.    Capitalize the category name like a title.  If the name of the
  500. category contains spaces, as in the phrase `Interactive Command', write
  501. braces around it.  For example:
  502.      @deffn {Interactive Command} isearch-forward
  503.      ...
  504.      @end deffn
  505. Otherwise, the second word will be mistaken for the name of the entity.
  506.    Some of the definition commands are more general than others.  The
  507. `@deffn' command, for example, is the general definition command for
  508. functions and the like--for entities that may take arguments.  When you
  509. use this command, you specify the category to which the entity belongs.
  510. The `@deffn' command possesses three predefined, specialized
  511. variations, `@defun', `@defmac', and `@defspec', that specify the
  512. category for you: "Function", "Macro", and "Special Form" respectively.
  513. The `@defvr' command also is accompanied by several predefined,
  514. specialized variations for describing particular kinds of variables.
  515.    The template for a specialized definition, such as `@defun', is
  516. similar to the template for a generalized definition, except that you
  517. do not need to specify the category:
  518.      @defun NAME ARGUMENTS...
  519.      BODY-OF-DEFINITION
  520.      @end defun
  521. Thus,
  522.      @defun buffer-end flag
  523.      This function returns @code{(point-min)} if @var{flag}
  524.      is less than 1, @code{(point-max)} otherwise.
  525.      ...
  526.      @end defun
  527. produces
  528.       - Function: buffer-end FLAG
  529.           This function returns `(point-min)' if FLAG is less than 1,
  530.           `(point-max)' otherwise.  ...
  531. *Note Sample Function Definition: Sample Function Definition, for a
  532. more detailed example of a function definition, including the use of
  533. `@example' inside the definition.
  534.    The other specialized commands work like `@defun'.
  535. File: texi,  Node: Optional Arguments,  Next: deffnx,  Prev: Def Cmd Template,  Up: Definition Commands
  536. Optional and Repeated Arguments
  537. ===============================
  538.    Some entities take optional or repeated arguments, which may be
  539. specified by a distinctive glyph that uses square brackets and
  540. ellipses.  For example, a special form often breaks its argument list
  541. into separate arguments in more complicated ways than a straightforward
  542. function.
  543.    An argument enclosed within square brackets is optional.  Thus,
  544. [OPTIONAL-ARG] means that OPTIONAL-ARG is optional.  An argument
  545. followed by an ellipsis is optional and may be repeated more than once.
  546. Thus, REPEATED-ARGS... stands for zero or more arguments.  Parentheses
  547. are used when several arguments are grouped into additional levels of
  548. list structure in Lisp.
  549.    Here is the `@defspec' line of an example of an imaginary special
  550. form:
  551.       - Special Form: foobar (VAR [FROM TO [INC]]) BODY...
  552. In this example, the arguments FROM and TO are optional, but must both
  553. be present or both absent.  If they are present, INC may optionally be
  554. specified as well.  These arguments are grouped with the argument VAR
  555. into a list, to distinguish them from BODY, which includes all
  556. remaining elements of the form.
  557.    In a Texinfo source file, this `@defspec' line is written like this
  558. (except it would not be split over two lines, as it is in this example).
  559.      @defspec foobar (@var{var} [@var{from} @var{to}
  560.           [@var{inc}]]) @var{body}@dots{}
  561. The function is listed in the Command and Variable Index under `foobar'.
  562. File: texi,  Node: deffnx,  Next: Def Cmds in Detail,  Prev: Optional Arguments,  Up: Definition Commands
  563. Two or More `First' Lines
  564. =========================
  565.    To create two or more `first' or header lines for a definition,
  566. follow the first `@deffn' line by a line beginning with `@deffnx'.  The
  567. `@deffnx' command works exactly like `@deffn' except that it does not
  568. generate extra vertical white space between it and the preceding line.
  569.    For example,
  570.      @deffn {Interactive Command} isearch-forward
  571.      @deffnx {Interactive Command} isearch-backward
  572.      These two search commands are similar except ...
  573.      @end deffn
  574. produces
  575.  - Interactive Command: isearch-forward
  576.  - Interactive Command: isearch-backward
  577.      These two search commands are similar except ...
  578.    Each of the other definition commands has an `x' form: `@defunx',
  579. `@defvrx', `@deftypefunx', etc.
  580.    The `x' forms work just like `@itemx'; see *Note `@itemx': itemx.
  581. File: texi,  Node: Def Cmds in Detail,  Next: Def Cmd Conventions,  Prev: deffnx,  Up: Definition Commands
  582. The Definition Commands
  583. =======================
  584.    Texinfo provides more than a dozen definition commands, all of which
  585. are described in this section.
  586.    The definition commands automatically enter the name of the entity in
  587. the appropriate index: for example, `@deffn', `@defun', and `@defmac'
  588. enter function names in the index of functions; `@defvr' and `@defvar'
  589. enter variable names in the index of variables.
  590.    Although the examples that follow mostly illustrate Lisp, the
  591. commands can be used for other programming languages.
  592. * Menu:
  593. * Functions Commands::          Commands for functions and similar entities.
  594. * Variables Commands::          Commands for variables and similar entities.
  595. * Typed Functions::             Commands for functions in typed languages.
  596. * Typed Variables::             Commands for variables in typed languages.
  597. * Abstract Objects::            Commands for object-oriented programming.
  598. * Data Types::                  The definition command for data types.
  599. File: texi,  Node: Functions Commands,  Next: Variables Commands,  Up: Def Cmds in Detail
  600. Functions and Similar Entities
  601. ------------------------------
  602.    This section describes the commands for describing functions and
  603. similar entities:
  604. `@deffn CATEGORY NAME ARGUMENTS...'
  605.      The `@deffn' command is the general definition command for
  606.      functions, interactive commands, and similar entities that may take
  607.      arguments.  You must choose a term to describe the category of
  608.      entity being defined; for example, "Function" could be used if the
  609.      entity is a function.  The `@deffn' command is written at the
  610.      beginning of a line and is followed on the same line by the
  611.      category of entity being described, the name of this particular
  612.      entity, and its arguments, if any.  Terminate the definition with
  613.      `@end deffn' on a line of its own.
  614.      For example, here is a definition:
  615.           @deffn Command forward-char nchars
  616.           Move point forward @var{nchars} characters.
  617.           @end deffn
  618.      This shows a rather terse definition for a "command" named
  619.      `forward-char' with one argument, NCHARS.
  620.      `@deffn' prints argument names such as NCHARS in italics or upper
  621.      case, as if `@var' had been used, because we think of these names
  622.      as metasyntactic variables--they stand for the actual argument
  623.      values.  Within the text of the description, write an argument name
  624.      explicitly with `@var' to refer to the value of the argument.  In
  625.      the example above, we used `@var{nchars}' in this way.
  626.      The template for `@deffn' is:
  627.           @deffn CATEGORY NAME ARGUMENTS...
  628.           BODY-OF-DEFINITION
  629.           @end deffn
  630. `@defun NAME ARGUMENTS...'
  631.      The `@defun' command is the definition command for functions.
  632.      `@defun' is equivalent to `@deffn Function ...'.
  633.      For example,
  634.           @defun set symbol new-value
  635.           Change the value of the symbol @var{symbol}
  636.           to @var{new-value}.
  637.           @end defun
  638.      shows a rather terse definition for a function `set' whose
  639.      arguments are SYMBOL and NEW-VALUE.  The argument names on the
  640.      `@defun' line automatically appear in italics or upper case as if
  641.      they were enclosed in `@var'.  Terminate the definition with `@end
  642.      defun' on a line of its own.
  643.      The template is:
  644.           @defun FUNCTION-NAME ARGUMENTS...
  645.           BODY-OF-DEFINITION
  646.           @end defun
  647.      `@defun' creates an entry in the index of functions.
  648. `@defmac NAME ARGUMENTS...'
  649.      The `@defmac' command is the definition command for macros.
  650.      `@defmac' is equivalent to `@deffn Macro ...' and works like
  651.      `@defun'.
  652. `@defspec NAME ARGUMENTS...'
  653.      The `@defspec' command is the definition command for special
  654.      forms.  (In Lisp, a special form is an entity much like a
  655.      function.) `@defspec' is equivalent to `@deffn {Special Form} ...'
  656.      and works like `@defun'.
  657. File: texi,  Node: Variables Commands,  Next: Typed Functions,  Prev: Functions Commands,  Up: Def Cmds in Detail
  658. Variables and Similar Entities
  659. ------------------------------
  660.    Here are the commands for defining variables and similar entities:
  661. `@defvr CATEGORY NAME'
  662.      The `@defvr' command is a general definition command for something
  663.      like a variable--an entity that records a value.  You must choose
  664.      a term to describe the category of entity being defined; for
  665.      example, "Variable" could be used if the entity is a variable.
  666.      Write the `@defvr' command at the beginning of a line and followed
  667.      it on the same line by the category of the entity and the name of
  668.      the entity.
  669.      Capitalize the category name like a title.  If the name of the
  670.      category contains spaces, as in the name `User Option', write
  671.      braces around it.  Otherwise, the second word will be mistaken for
  672.      the name of the entity, for example:
  673.           @defvr {User Option} fill-column
  674.           This buffer-local variable specifies
  675.           the maximum width of filled lines.
  676.           ...
  677.           @end defvr
  678.      Terminate the definition with `@end defvr' on a line of its own.
  679.      The template is:
  680.           @defvr CATEGORY NAME
  681.           BODY-OF-DEFINITION
  682.           @end defvr
  683.      `@defvr' creates an entry in the index of variables for NAME.
  684. `@defvar NAME'
  685.      The `@defvar' command is the definition command for variables.
  686.      `@defvar' is equivalent to `@defvr Variable ...'.
  687.      For example:
  688.           @defvar kill-ring
  689.           ...
  690.           @end defvar
  691.      The template is:
  692.           @defvar NAME
  693.           BODY-OF-DEFINITION
  694.           @end defvar
  695.      `@defvar' creates an entry in the index of variables for NAME.
  696. `@defopt NAME'
  697.      The `@defopt' command is the definition command for user options.
  698.      `@defopt' is equivalent to `@defvr {User Option} ...' and works
  699.      like `@defvar'.
  700. File: texi,  Node: Typed Functions,  Next: Typed Variables,  Prev: Variables Commands,  Up: Def Cmds in Detail
  701. Functions in Typed Languages
  702. ----------------------------
  703.    The `@deftypefn' command and its variations are for describing
  704. functions in C or any other language in which you must declare types of
  705. variables and functions.
  706. `@deftypefn CATEGORY DATA-TYPE NAME ARGUMENTS...'
  707.      The `@deftypefn' command is the general definition command for
  708.      functions and similar entities that may take arguments and that are
  709.      typed.  The `@deftypefn' command is written at the beginning of a
  710.      line and is followed on the same line by the category of entity
  711.      being described, the type of the returned value, the name of this
  712.      particular entity, and its arguments, if any.
  713.      For example,
  714.           @deftypefn {Library Function} int foobar
  715.              (int @var{foo}, float @var{bar})
  716.           ...
  717.           @end deftypefn
  718.      (where the text before the "...", shown above as two lines, would
  719.      actually be a single line in a real Texinfo file) produces the
  720.      following in Info:
  721.           -- Library Function: int foobar (int FOO, float BAR)
  722.           ...
  723.      This means that `foobar' is a "library function" that returns an
  724.      `int', and its arguments are FOO (an `int') and BAR (a `float').
  725.      The argument names that you write in `@deftypefn' are not subject
  726.      to an implicit `@var'--since the actual names of the arguments in
  727.      `@deftypefn' are typically scattered among data type names and
  728.      keywords, Texinfo cannot find them without help.  Instead, you
  729.      must write `@var' explicitly around the argument names.  In the
  730.      example above, the argument names are `foo' and `bar'.
  731.      The template for `@deftypefn' is:
  732.           @deftypefn CATEGORY DATA-TYPE NAME ARGUMENTS ...
  733.           BODY-OF-DESCRIPTION
  734.           @end deftypefn
  735.      Note that if the CATEGORY or DATA TYPE is more than one word then
  736.      it must be enclosed in braces to make it a single argument.
  737.      If you are describing a procedure in a language that has packages,
  738.      such as Ada, you might consider using `@deftypefn' in a manner
  739.      somewhat contrary to the convention described in the preceding
  740.      paragraphs.
  741.      For example:
  742.           @deftypefn stacks private push
  743.                   (@var{s}:in out stack;
  744.                   @var{n}:in integer)
  745.           ...
  746.           @end deftypefn
  747.      (The `@deftypefn' arguments are shown split into three lines, but
  748.      would be a single line in a real Texinfo file.)
  749.      In this instance, the procedure is classified as belonging to the
  750.      package `stacks' rather than classified as a `procedure' and its
  751.      data type is described as `private'.  (The name of the procedure
  752.      is `push', and its arguments are S and N.)
  753.      `@deftypefn' creates an entry in the index of functions for NAME.
  754. `@deftypefun DATA-TYPE NAME ARGUMENTS...'
  755.      The `@deftypefun' command is the specialized definition command
  756.      for functions in typed languages.  The command is equivalent to
  757.      `@deftypefn Function ...'.
  758.      Thus,
  759.           @deftypefun int foobar (int @var{foo}, float @var{bar})
  760.           ...
  761.           @end deftypefun
  762.      produces the following in Info:
  763.           -- Function: int foobar (int FOO, float BAR)
  764.           ...
  765.      The template is:
  766.           @deftypefun TYPE NAME ARGUMENTS...
  767.           BODY-OF-DESCRIPTION
  768.           @end deftypefun
  769.      `@deftypefun' creates an entry in the index of functions for NAME.
  770. File: texi,  Node: Typed Variables,  Next: Abstract Objects,  Prev: Typed Functions,  Up: Def Cmds in Detail
  771. Variables in Typed Languages
  772. ----------------------------
  773.    Variables in typed languages are handled in a manner similar to
  774. functions in typed languages.  *Note Typed Functions::.  The general
  775. definition command `@deftypevr' corresponds to `@deftypefn' and the
  776. specialized definition command `@deftypevar' corresponds to
  777. `@deftypefun'.
  778. `@deftypevr CATEGORY DATA-TYPE NAME'
  779.      The `@deftypevr' command is the general definition command for
  780.      something like a variable in a typed language--an entity that
  781.      records a value.  You must choose a term to describe the category
  782.      of the entity being defined; for example, "Variable" could be used
  783.      if the entity is a variable.
  784.      The `@deftypevr' command is written at the beginning of a line and
  785.      is followed on the same line by the category of the entity being
  786.      described, the data type, and the name of this particular entity.
  787.      For example:
  788.           @deftypevr {Global Flag} int enable
  789.           ...
  790.           @end deftypevr
  791.      produces the following in Info:
  792.           -- Global Flag: int enable
  793.           ...
  794.      The template is:
  795.           @deftypevr CATEGORY DATA-TYPE NAME
  796.           BODY-OF-DESCRIPTION
  797.           @end deftypevr
  798.      `@deftypevr' creates an entry in the index of variables for NAME.
  799. `@deftypevar DATA-TYPE NAME'
  800.      The `@deftypevar' command is the specialized definition command
  801.      for variables in typed languages.  `@deftypevar' is equivalent to
  802.      `@deftypevr Variable ...'.
  803.      For example:
  804.           @deftypevar int fubar
  805.           ...
  806.           @end deftypevar
  807.      produces the following in Info:
  808.           -- Variable: int fubar
  809.           ...
  810.      The template is:
  811.           @deftypevar DATA-TYPE NAME
  812.           BODY-OF-DESCRIPTION
  813.           @end deftypevar
  814.      `@deftypevar' creates an entry in the index of variables for NAME.
  815. File: texi,  Node: Abstract Objects,  Next: Data Types,  Prev: Typed Variables,  Up: Def Cmds in Detail
  816. Object-Oriented Programming
  817. ---------------------------
  818.    Here are the commands for formatting descriptions about abstract
  819. objects, such as are used in object-oriented programming.  A class is a
  820. defined type of abstract object.  An instance of a class is a
  821. particular object that has the type of the class.  An instance variable
  822. is a variable that belongs to the class but for which each instance has
  823. its own value.
  824.    In a definition, if the name of a class is truly a name defined in
  825. the programming system for a class, then you should write an `@code'
  826. around it.  Otherwise, it is printed in the usual text font.
  827. `@defcv CATEGORY CLASS NAME'
  828.      The `@defcv' command is the general definition command for
  829.      variables associated with classes in object-oriented programming.
  830.      The `@defcv' command is followed by three arguments: the category
  831.      of thing being defined, the class to which it belongs, and its
  832.      name.  Thus,
  833.           @defcv {Class Option} Window border-pattern
  834.           ...
  835.           @end defcv
  836.      illustrates how you would write the first line of a definition of
  837.      the `border-pattern' class option of the class `Window'.
  838.      The template is
  839.           @defcv CATEGORY CLASS NAME
  840.           ...
  841.           @end defcv
  842.      `@defcv' creates an entry in the index of variables.
  843. `@defivar CLASS NAME'
  844.      The `@defivar' command is the definition command for instance
  845.      variables in object-oriented programming.  `@defivar' is
  846.      equivalent to `@defcv {Instance Variable} ...'
  847.      The template is:
  848.           @defivar CLASS INSTANCE-VARIABLE-NAME
  849.           BODY-OF-DEFINITION
  850.           @end defivar
  851.      `@defivar' creates an entry in the index of variables.
  852. `@defop CATEGORY CLASS NAME ARGUMENTS...'
  853.      The `@defop' command is the general definition command for
  854.      entities that may resemble methods in object-oriented programming.
  855.      These entities take arguments, as functions do, but are associated
  856.      with particular classes of objects.
  857.      For example, some systems have constructs called "wrappers" that
  858.      are associated with classes as methods are, but that act more like
  859.      macros than like functions.  You could use `@defop Wrapper' to
  860.      describe one of these.
  861.      Sometimes it is useful to distinguish methods and "operations".
  862.      You can think of an operation as the specification for a method.
  863.      Thus, a window system might specify that all window classes have a
  864.      method named `expose'; we would say that this window system
  865.      defines an `expose' operation on windows in general.  Typically,
  866.      the operation has a name and also specifies the pattern of
  867.      arguments; all methods that implement the operation must accept
  868.      the same arguments, since applications that use the operation do
  869.      so without knowing which method will implement it.
  870.      Often it makes more sense to document operations than methods.  For
  871.      example, window application developers need to know about the
  872.      `expose' operation, but need not be concerned with whether a given
  873.      class of windows has its own method to implement this operation.
  874.      To describe this operation, you would write:
  875.           @defop Operation windows expose
  876.      The `@defop' command is written at the beginning of a line and is
  877.      followed on the same line by the overall name of the category of
  878.      operation, the name of the class of the operation, the name of the
  879.      operation, and its arguments, if any.
  880.      The template is:
  881.           @defop CATEGORY CLASS NAME ARGUMENTS...
  882.           BODY-OF-DEFINITION
  883.           @end defop
  884.      `@defop' creates an entry, such as ``expose' on `windows'', in the
  885.      index of functions.
  886. `@defmethod CLASS NAME ARGUMENTS...'
  887.      The `@defmethod' command is the definition command for methods in
  888.      object-oriented programming.  A method is a kind of function that
  889.      implements an operation for a particular class of objects and its
  890.      subclasses.  In the Lisp Machine, methods actually were functions,
  891.      but they were usually defined with `defmethod'.
  892.      `@defmethod' is equivalent to `@defop Method ...'.  The command is
  893.      written at the beginning of a line and is followed by the name of
  894.      the class of the method, the name of the method, and its
  895.      arguments, if any.
  896.      For example,
  897.           @defmethod `bar-class' bar-method argument
  898.           ...
  899.           @end defmethod
  900.      illustrates the definition for a method called `bar-method' of the
  901.      class `bar-class'.  The method takes an argument.
  902.      The template is:
  903.           @defmethod CLASS METHOD-NAME ARGUMENTS...
  904.           BODY-OF-DEFINITION
  905.           @end defmethod
  906.      `@defmethod' creates an entry in the index of functions, such as
  907.      ``bar-method' on `bar-class''.
  908. File: texi,  Node: Data Types,  Prev: Abstract Objects,  Up: Def Cmds in Detail
  909. Data Types
  910. ----------
  911.    Here is the command for data types:
  912. `@deftp CATEGORY NAME ATTRIBUTES...'
  913.      The `@deftp' command is the generic definition command for data
  914.      types.  The command is written at the beginning of a line and is
  915.      followed on the same line by the category, by the name of the type
  916.      (which is a word like `int' or `float'), and then by names of
  917.      attributes of objects of that type.  Thus, you could use this
  918.      command for describing `int' or `float', in which case you could
  919.      use `data type' as the category.  (A data type is a category of
  920.      certain objects for purposes of deciding which operations can be
  921.      performed on them.)
  922.      In Lisp, for example,  "pair" names a particular data type, and an
  923.      object of that type has two slots called the CAR and the CDR.
  924.      Here is how you would write the first line of a definition of
  925.      `pair'.
  926.           @deftp {Data type} pair car cdr
  927.           ...
  928.           @end deftp
  929.      The template is:
  930.           @deftp CATEGORY NAME-OF-TYPE ATTRIBUTES...
  931.           BODY-OF-DEFINITION
  932.           @end deftp
  933.      `@deftp' creates an entry in the index of data types.
  934. File: texi,  Node: Def Cmd Conventions,  Next: Sample Function Definition,  Prev: Def Cmds in Detail,  Up: Definition Commands
  935. Conventions for Writing Definitions
  936. ===================================
  937.    When you write a definition using `@deffn', `@defun', or one of the
  938. other definition commands, please take care to use arguments that
  939. indicate the meaning, as with the COUNT argument to the `forward-word'
  940. function.  Also, if the name of an argument contains the name of a
  941. type, such as INTEGER, take care that the argument actually is of that
  942. type.
  943. File: texi,  Node: Sample Function Definition,  Prev: Def Cmd Conventions,  Up: Definition Commands
  944. A Sample Function Definition
  945. ============================
  946.    A function definition uses the `@defun' and `@end defun' commands.
  947. The name of the function follows immediately after the `@defun' command
  948. and it is followed, on the same line, by the parameter list.
  949.    Here is a definition from `The GNU Emacs Lisp Reference Manual'.
  950. (*Note Calling Functions: (elisp)Calling Functions.)
  951.       - Function: apply FUNCTION &rest ARGUMENTS
  952.           `apply' calls FUNCTION with ARGUMENTS, just like `funcall'
  953.           but with one difference: the last of ARGUMENTS is a list of
  954.           arguments to give to FUNCTION, rather than a single argument.
  955.           We also say that this list is "appended" to the other
  956.           arguments.
  957.           `apply' returns the result of calling FUNCTION.  As with
  958.           `funcall', FUNCTION must either be a Lisp function or a
  959.           primitive function; special forms and macros do not make
  960.           sense in `apply'.
  961.                (setq f 'list)
  962.                     => list
  963.                (apply f 'x 'y 'z)
  964.                error--> Wrong type argument: listp, z
  965.                (apply '+ 1 2 '(3 4))
  966.                     => 10
  967.                (apply '+ '(1 2 3 4))
  968.                     => 10
  969.                
  970.                (apply 'append '((a b c) nil (x y z) nil))
  971.                     => (a b c x y z)
  972.           An interesting example of using `apply' is found in the
  973.           description of `mapcar'.
  974.    In the Texinfo source file, this example looks like this:
  975.      @defun apply function &rest arguments
  976.      
  977.      @code{apply} calls @var{function} with
  978.      @var{arguments}, just like @code{funcall} but with one
  979.      difference: the last of @var{arguments} is a list of
  980.      arguments to give to @var{function}, rather than a single
  981.      argument.  We also say that this list is @dfn{appended}
  982.      to the other arguments.
  983.      
  984.      @code{apply} returns the result of calling
  985.      @var{function}.  As with @code{funcall},
  986.      @var{function} must either be a Lisp function or a
  987.      primitive function; special forms and macros do not make
  988.      sense in @code{apply}.
  989.      
  990.      @example
  991.      (setq f 'list)
  992.           @result{} list
  993.      (apply f 'x 'y 'z)
  994.      @error{} Wrong type argument: listp, z
  995.      (apply '+ 1 2 '(3 4))
  996.           @result{} 10
  997.      (apply '+ '(1 2 3 4))
  998.           @result{} 10
  999.      
  1000.      (apply 'append '((a b c) nil (x y z) nil))
  1001.           @result{} (a b c x y z)
  1002.      @end example
  1003.      
  1004.      An interesting example of using @code{apply} is found
  1005.      in the description of @code{mapcar}.@refill
  1006.      @end defun
  1007. In this manual, this function is listed in the Command and Variable
  1008. Index under `apply'.
  1009.    Ordinary variables and user options are described using a format like
  1010. that for functions except that variables do not take arguments.
  1011.